<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.zhiyou100.entityclass.Student" %>
<%--
  Created by IntelliJ IDEA.
  User: yang
  Date: 7/21/20
  Time: 15:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el表达式</title>
</head>
<body>

<%-- EL 表达式功能1 替代 out.write | <%=%> 获取域属性 --%>
<%
    int a = 12;
    pageContext.setAttribute("a", a);
%>
<p>a=${a};</p>
<p><br><br></p>


<%-- EL 表达式功能2 执行基本的数学运算 --%>

<%-- 1.算术运算符 --%>
<p>1+1=${1+1}</p>
<p>2*3=${2*3}</p>
<p>2/0=${2/0}</p>
<%-- 当等于 null 或 为 Infinity --%>
<%-- EL 表达式 不显示 null, 屏蔽了异常--%>
<p>3%4=${3%4}</p>
<p>3%4=${3 mod 4}</p>
<p>3%4=${"我叫"+="苗天保"+="，今年33岁"}</p>
<%-- 字符串拼接用 += --%>
<%-- 2.关系运算符 --%>
<p>1>2 ${1>2}</p>
<p>1>=2 ${1>=2}</p>
<p>1<2 ${1<2}</p>
<p>1<=2 ${1<=2}</p>
<p>1==2 ${1==2}</p>
<p>1!=2 ${1!=2}</p>

<%-- 3.逻辑运算符 --%>
<p>true&&false  ${true && false}</p>
<p>true||false  ${true || false}</p>
<p>!true  ${!true}</p>

<%-- 4 三元运算符 --%>
<p>${1>2?"1>2":"1<2"}</p>

<%-- 5 特殊运算符 --%>
<%
    pageContext.setAttribute("MyEmpty",null);
    pageContext.setAttribute("MyNotEmpty","null");
    ArrayList<String> str = new ArrayList<>();
    str.add("1");
    str.add("2");
    str.add("3");
    pageContext.setAttribute("myStr",str);
%>
<p>${empty 0}</p>
<p>${empty MyEmpty}</p>
<p>${not empty MyNotEmpty}</p>



<p><br><br></p>


<%-- EL 表达式功能3 操作 集合或者数组 --%>
<%
    ArrayList<Integer> list = new ArrayList<>();
    list.add(10);
    list.add(20);
    list.add(22);
    list.add(33);
    pageContext.setAttribute("list", list);
%>
<p>list.get(0)=${list[0]}</p>
<p>list.get(1)=${list[1]}</p>
<p>list.get(2)=${list[2]}</p>
<p>list.get(3)=${list[3]}</p>

<%
    for (Integer integer : list) {
        out.print(integer + "<br>");
    }
%>
<p><br><br></p>

<%-- EL 表达式功能4 操作 map --%>
<%
    Map<String, Integer> map = new HashMap<>();
    map.put("a", 1);
    map.put("b", 12);
    map.put("c", 123);
    map.put("d_1", 1234);
    map.put("f-1", 12345);
    pageContext.setAttribute("map", map);
%>
<p>map.get("a")=${map.get("a")}</p>
<p>map.get("b")=${map.b}</p>
<p>map.get("c")=${map['c']}</p>
<p>map.get("d_1")=${map.d_1}</p>
<p>map.get("d_1")=${map['d_1']}</p>
<p><br><br></p>

<%-- EL 表达式功能5 对象导航 只要对象有 getXXX 方法，即可通过 对象名.XX 获取此方法的返回值  --%>
<%
    Student s = new Student(1L, "杨磊", "男", 23L, 1L);
    pageContext.setAttribute("student", s);
%>
<p>名字=${student.sname}</p>
<%-- Studnet 对象中有 getXX 方法 --%>
<p>年龄=${student.sage}</p>
<p>id=${student.sid}</p>
<p>性别=${student.sex}</p>
<p><br><br></p>

<%
    String pageName = "/css/login.css";
    pageContext.setAttribute("pageName", pageName);
%>
<p>${pageName}</p>
<p>
    <jsp:include page="${pageName}"/>
<%--   EL 表达式可以用在 html 和 jsp 标签中 --%>
</p>

</body>
</html>
